package com.example.jwtauthdemo.util;

/**
 * 响应状态码枚举类
 * 遵循HTTP状态码规范，并扩展业务状态码
 */
public enum ResultCode {
    // 成功状态码
    SUCCESS(200, "操作成功"),

    // 客户端错误（4xx）
    BAD_REQUEST(400, "请求参数错误"),
    UNAUTHORIZED(401, "未授权，请登录"),
    FORBIDDEN(403, "权限不足，拒绝访问"),
    NOT_FOUND(404, "资源不存在"),
    METHOD_NOT_ALLOWED(405, "请求方法不支持"),
    REQUEST_TIMEOUT(408, "请求超时"),

    // 服务器错误（5xx）
    INTERNAL_SERVER_ERROR(500, "服务器内部错误"),
    SERVICE_UNAVAILABLE(503, "服务暂时不可用"),

    // 业务自定义错误（1xxx）
    BUSINESS_ERROR(1000, "业务逻辑错误"),
    DATA_VALIDATION_ERROR(1001, "数据验证失败"),
    RESOURCE_CONFLICT(1002, "资源冲突，已存在"),
    RATE_LIMIT_EXCEEDED(1003, "请求频率超限"),
    TOKEN_EXPIRED(1004, "令牌已过期"),
    TOKEN_INVALID(1005, "令牌无效");

    private final int code;
    private final String message;

    ResultCode(int code, String message) {
        this.code = code;
        this.message = message;
    }

    public int getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }
}

